- name: Set up those ProxyPassReverse statements.  Somebody get me a cup of coffee..
  hosts: proxies-stg:proxies
  user: root
  gather_facts: True

  vars_files:
   - /srv/web/infra/ansible/vars/global.yml
   - "/srv/private/ansible/vars.yml"
   - /srv/web/infra/ansible/vars/{{ ansible_distribution }}.yml

  handlers:
  - import_tasks: "{{ handlers_path }}/restart_services.yml"

  vars:
  - varnish_url: http://localhost:6081

  pre_tasks:

  - name: Remove some crusty files from bygone eras
    file: dest=/etc/httpd/conf.d/{{item}} state=absent
    with_items:
    - meetbot.fedoraproject.org/reversepassproxy.conf
    - meetbot.fedoraproject.org/meetbot.conf
    notify:
    - reload proxyhttpd
    tags:
    - httpd
    - httpd/reverseproxy


  roles:

  - role: httpd/reverseproxy
    website: copr.fedoraproject.org
    destname: coprapi
    localpath: /api
    remotepath: /api
    proxyurl: https://copr.fedorainfracloud.org

  - role: httpd/reverseproxy
    website: nagios.fedoraproject.org
    destname: nagios
    remotepath: /
    proxyurl: http://noc01.phx2.fedoraproject.org

  - role: httpd/reverseproxy
    website: lists.fedoraproject.org
    destname: mailman3
    localpath: /
    remotepath: /
    header_scheme: true
    keephost: true
    proxyurl: "{{ varnish_url }}"

  - role: httpd/reverseproxy
    website: lists.fedorahosted.org
    destname: mailman3
    localpath: /
    remotepath: /
    header_scheme: true
    keephost: true
    proxyurl: "{{ varnish_url }}"

  # The place for the raw originals
  - role: httpd/reverseproxy
    website: meetbot-raw.fedoraproject.org
    destname: meetbot
    remotepath: /meetbot/
    # Talk directly to the app server, not haproxy
    proxyurl: http://value01

  # The place for the fancy mote view
  - role: httpd/reverseproxy
    website: meetbot.fedoraproject.org
    destname: mote
    #remotepath: /mote/
    # Talk directly to the app server, not haproxy
    proxyurl: http://value01

  - role: httpd/reverseproxy
    website: apps.fedoraproject.org
    destname: nuancier
    localpath: /nuancier
    remotepath: /nuancier
    header_scheme: true
    proxyurl: "{{ varnish_url }}"

  - role: httpd/reverseproxy
    website: apps.fedoraproject.org
    destname: github2fedmsg
    localpath: /github2fedmsg
    remotepath: /github2fedmsg
    header_scheme: true
    proxyurl: http://localhost:10037

  - role: httpd/reverseproxy
    website: apps.fedoraproject.org
    destname: fedora-notifications
    localpath: /notifications
    remotepath: /notifications
    header_scheme: true
    proxyurl: http://localhost:10036

  - role: httpd/reverseproxy
    website: apps.fedoraproject.org
    destname: packages
    localpath: /packages
    remotepath: /packages
    proxyurl: http://localhost:10016

  - role: httpd/reverseproxy
    website: apps.fedoraproject.org
    destname: tagger
    localpath: /tagger
    remotepath: /tagger
    rewrite: true
    proxyurl: http://localhost:10017

  - role: httpd/reverseproxy
    website: ask.fedoraproject.org
    destname: askbot
    proxyurl: "{{ varnish_url }}"

  - role: httpd/reverseproxy
    website: paste.fedoraproject.org
    destname: modernpaste
    keephost: true
    proxyurl: "{{ varnish_url }}"

  - role: httpd/reverseproxy
    website: awx.fedoraproject.org
    destname: awx
    remotepath: /
    localpath: /
    proxyurl: http://localhost:10069
    when: env == "production"
    tags:
    - awx.fedoraproject.org

  - role: httpd/reverseproxy
    website: admin.fedoraproject.org
    destname: totpcgiprovision
    localpath: /totpcgiprovision
    proxyurl: http://localhost:10019

  - role: httpd/reverseproxy
    website: admin.fedoraproject.org
    destname: fas
    remotepath: /accounts
    localpath: /accounts
    proxyurl: http://localhost:10004

  - role: httpd/reverseproxy
    website: admin.fedoraproject.org
    destname: elections
    remotepath: /voting
    localpath: /voting
    proxyurl: http://localhost:10007

  # Fedoauth is odd here -- it has an entry for both stg and prod.
  - role: httpd/reverseproxy
    website: id.stg.fedoraproject.org
    destname: id
    proxyurl: http://localhost:10020
    when: env == "staging"

  - role: httpd/reverseproxy
    website: username.id.stg.fedoraproject.org
    destname: usernameid
    proxyurl: http://localhost:10020
    when: env == "staging"

  - role: httpd/reverseproxy
    website: id.stg.fedoraproject.org
    destname: 00-kdcproxy
    remotepath: /KdcProxy
    localpath: /KdcProxy
    proxyurl: http://localhost:10053
    when: env == "staging"

  - role: httpd/reverseproxy
    website: id.stg.fedoraproject.org
    destname: 00-ipa
    remotepath: /ipa
    localpath: /ipa
    proxyurl: http://localhost:10061
    when: env == "staging"

  - role: httpd/reverseproxy
    website: id.fedoraproject.org
    destname: id
    proxyurl: http://localhost:10020
    tags:
    - id.fedoraproject.org
    when: env != "staging"

  - role: httpd/reverseproxy
    website: username.id.fedoraproject.org
    destname: usernameid
    proxyurl: http://localhost:10020
    tags:
    - id.fedoraproject.org
    when: env != "staging"

  - role: httpd/reverseproxy
    website: id.fedoraproject.org
    destname: 00-kdcproxy
    remotepath: /KdcProxy
    localpath: /KdcProxy
    proxyurl: http://localhost:10053
    when: env != "staging"

  - role: httpd/reverseproxy
    website: id.fedoraproject.org
    destname: 00-ipa
    remotepath: /ipa
    localpath: /ipa
    proxyurl: http://localhost:10061
    when: env != "staging"

  - role: httpd/reverseproxy
    website: apps.fedoraproject.org
    destname: datagrepper
    remotepath: /datagrepper
    localpath: /datagrepper
    rewrite: true
    proxyurl: http://localhost:10028

  - role: httpd/reverseproxy
    website: badges.fedoraproject.org
    destname: badges
    proxyurl: http://localhost:10032

  - role: httpd/reverseproxy
    website: apps.fedoraproject.org
    destname: fedocal
    remotepath: /calendar
    localpath: /calendar
    header_scheme: true
    proxyurl: "{{ varnish_url }}"

  - role: httpd/reverseproxy
    website: apps.fedoraproject.org
    destname: kerneltest
    remotepath: /kerneltest
    localpath: /kerneltest
    header_scheme: true
    proxyurl: "{{ varnish_url }}"

  - role: httpd/reverseproxy
    website: qa.fedoraproject.org
    destname: blockerbugs
    remotepath: /blockerbugs
    localpath: /blockerbugs
    proxyurl: "{{ varnish_url }}"

  - role: httpd/reverseproxy
    website: fedoraproject.org
    destname: fp-wiki
    wpath: /w
    wikipath: /wiki
    proxyurl: "{{ varnish_url }}"

  - role: httpd/reverseproxy
    website: admin.fedoraproject.org
    destname: pkgdb
    remotepath: /pkgdb
    localpath: /pkgdb
    proxyurl: "{{ varnish_url }}"

  - role: httpd/reverseproxy
    website: bodhi.fedoraproject.org
    destname: bodhi
    proxyurl: http://localhost:10010
    when: env != "staging"
    tags: bodhi

  - role: httpd/reverseproxy
    website: bodhi.fedoraproject.org
    destname: bodhi
    proxyurl: http://localhost:10065
    keephost: true
    tags: bodhi

  - role: httpd/reverseproxy
    website: admin.fedoraproject.org
    destname: mirrormanager
    remotepath: /mirrormanager
    localpath: /mirrormanager
    proxyurl: "{{ varnish_url }}"

  - role: httpd/reverseproxy
    website: mirrors.fedoraproject.org
    destname: mirrormanager-mirrorlist
    proxyurl: http://localhost:10002

  - role: httpd/reverseproxy
    website: download.fedoraproject.org
    destname: mirrormanager-redirector
    proxyurl: http://localhost:10002

  - role: httpd/reverseproxy
    website: apps.fedoraproject.org
    destname: koschei
    localpath: /koschei
    remotepath: /koschei
    proxyurl: "{{ varnish_url }}"

  - role: httpd/reverseproxy
    website: apps.fedoraproject.org
    destname: mdapi
    remotepath: /mdapi
    localpath: /mdapi
    proxyurl: http://localhost:10043

  - role: httpd/reverseproxy
    website: openqa.fedoraproject.org
    destname: openqa
    remotepath: /
    localpath: /
    proxyurl: http://localhost:10044

  - role: httpd/reverseproxy
    website: apps.fedoraproject.org
    destname: autocloud
    localpath: /autocloud
    remotepath: /autocloud
    proxyurl: http://localhost:10041

  - role: httpd/reverseproxy
    website: apps.fedoraproject.org
    destname: statscache
    localpath: /statscache
    remotepath: /statscache
    proxyurl: http://localhost:10042

  - role: httpd/reverseproxy
    website: pdc.fedoraproject.org
    destname: pdc
    proxyurl: http://localhost:10045
    header_scheme: true
    tags: pdc

  - role: httpd/reverseproxy
    website: apps.fedoraproject.org
    destname: zanata2fedmsg
    localpath: /zanata2fedmsg
    remotepath: /zanata2fedmsg
    proxyurl: http://localhost:10046

  - role: httpd/reverseproxy
    website: admin.fedoraproject.org
    destname: yk-val
    remotepath: /yk-val/verify
    localpath: /yk-val/verify
    proxyurl: http://localhost:10004

  - role: httpd/reverseproxy
    website: admin.fedoraproject.org
    destname: pager
    remotepath: /pager
    localpath: /pager
    # Talk directly to the app server, not haproxy
    proxyurl: http://sundries01

  - role: httpd/reverseproxy
    website: admin.fedoraproject.org
    destname: awstats
    remotepath: /awstats
    localpath: /awstats
    # Talk directly to the app server, not haproxy
    proxyurl: http://log01

  - role: httpd/reverseproxy
    website: admin.fedoraproject.org
    destname: epylog
    remotepath: /epylog
    localpath: /epylog
    # Talk directly to the app server, not haproxy
    proxyurl: http://log01

  - role: httpd/reverseproxy
    website: admin.fedoraproject.org
    destname: maps
    remotepath: /maps
    localpath: /maps
    # Talk directly to the app server, not haproxy
    proxyurl: http://log01

  - role: httpd/reverseproxy
    website: fedoraproject.org
    destname: freemedia
    remotepath: /freemedia
    localpath: /freemedia
    proxyurl: http://localhost:10011

  - role: httpd/reverseproxy
    website: admin.fedoraproject.org
    destname: collectd
    localpath: /collectd
    remotepath: /collectd
    # Talk directly to the app server, not haproxy
    proxyurl: http://log01

  ### Four entries for taskotron for production
  - role: httpd/reverseproxy
    website: taskotron.fedoraproject.org
    destname: taskotron
    # Talk directly to the app server, not haproxy
    proxyurl: http://taskotron01.vpn.fedoraproject.org

  - role: httpd/reverseproxy
    website: taskotron.fedoraproject.org
    destname: taskotron-resultsdb
    localpath: /resultsdb
    remotepath: /resultsdb
    # Talk directly to the app server, not haproxy
    proxyurl: http://resultsdb01.vpn.fedoraproject.org

  - role: httpd/reverseproxy
    website: taskotron.fedoraproject.org
    destname: taskotron-resultsdbapi
    localpath: /resultsdb_api
    remotepath: /resultsdb_api
    # Talk directly to the app server, not haproxy
    proxyurl: http://resultsdb01.vpn.fedoraproject.org

  - role: httpd/reverseproxy
    website: taskotron.fedoraproject.org
    destname: taskotron-execdb
    localpath: /execdb
    remotepath: /execdb
    # Talk directly to the app server, not haproxy
    proxyurl: http://resultsdb01.vpn.fedoraproject.org

  ### And four entries for taskotron for staging
  - role: httpd/reverseproxy
    website: taskotron.stg.fedoraproject.org
    destname: taskotron
    # Talk directly to the app server, not haproxy
    proxyurl: http://taskotron-stg01.qa.fedoraproject.org
    when: env == "staging"

  - role: httpd/reverseproxy
    website: taskotron.stg.fedoraproject.org
    destname: taskotron-resultsdb
    localpath: /resultsdb
    remotepath: /resultsdb
    # Talk directly to the app server, not haproxy
    proxyurl: http://resultsdb-stg01.qa.fedoraproject.org
    when: env == "staging"

  - role: httpd/reverseproxy
    website: taskotron.stg.fedoraproject.org
    destname: taskotron-resultsdbapi
    localpath: /resultsdb_api
    remotepath: /resultsdb_api
    # Talk directly to the app server, not haproxy
    proxyurl: http://resultsdb-stg01.qa.fedoraproject.org
    when: env == "staging"

  - role: httpd/reverseproxy
    website: taskotron.stg.fedoraproject.org
    destname: taskotron-execdb
    localpath: /execdb
    remotepath: /execdb
    # Talk directly to the app server, not haproxy
    proxyurl: http://resultsdb-stg01.qa.fedoraproject.org
    when: env == "staging"

  ### Beaker production
  - role: httpd/reverseproxy
    website: beaker.qa.fedoraproject.org
    destname: beaker
    # Talk directly to the app server, not haproxy
    proxyurl: http://beaker01.vpn.fedoraproject.org
    when: env == "production"

  ### Beaker staging
  - role: httpd/reverseproxy
    website: beaker.stg.fedoraproject.org
    destname: beaker-stg
    # Talk directly to the app server, not haproxy
    proxyurl: http://beaker-stg01.qa.fedoraproject.org
    when: env == "staging"

  ### QA staging

  - role: httpd/reverseproxy
    website: qa.stg.fedoraproject.org
    destname: qa-stg
    # Talk directly to the app server, not haproxy
    proxyurl: http://qa-stg01.qa.fedoraproject.org
    when: env == "staging"

  - role: httpd/reverseproxy
    website: qa.stg.fedoraproject.org
    destname: blockerbugs
    remotepath: /blockerbugs
    localpath: /blockerbugs
    proxyurl: "{{ varnish_url }}"
    when: env == "staging"

  - role: httpd/reverseproxy
    website: phab.qa.stg.fedoraproject.org
    destname: qa-stg-phab
    # Talk directly to the app server, not haproxy
    proxyurl: http://phab.qa-stg01.qa.fedoraproject.org
    keephost: true
    when: env == "staging"

  - role: httpd/reverseproxy
    website: docs.qa.stg.fedoraproject.org
    destname: qa-stg-docs
    # Talk directly to the app server, not haproxy
    proxyurl: http://docs.qa-stg01.qa.fedoraproject.org
    when: env == "staging"

  ### QA production

  - role: httpd/reverseproxy
    website: qa.fedoraproject.org
    destname: qa-prod
    # Talk directly to the app server, not haproxy
    proxyurl: http://qa-prod01.vpn.fedoraproject.org

  - role: httpd/reverseproxy
    website: phab.qa.fedoraproject.org
    destname: qa-prod-phab
    # Talk directly to the app server, not haproxy
    proxyurl: http://phab.qa-prod01.vpn.fedoraproject.org
    keephost: true

  - role: httpd/reverseproxy
    website: docs.qa.fedoraproject.org
    destname: qa-prod-docs
    # Talk directly to the app server, not haproxy
    proxyurl: http://docs.qa-prod01.vpn.fedoraproject.org

  # This one gets its own role (instead of httpd/reverseproxy) so that it can
  # copy in some silly static resources (globe.png, index.html)
  - role: geoip-city-wsgi/proxy
    website: geoip.fedoraproject.org
    proxyurl: http://localhost:10029

  - role: httpd/reverseproxy
    website: src.fedoraproject.org
    destname: git
    proxyurl: http://localhost:10057
    header_scheme: true
    keephost: true

  - role: httpd/reverseproxy
    website: osbs.fedoraproject.org
    destname: osbs
    proxyurl: http://localhost:10047

  - role: httpd/reverseproxy
    website: registry.fedoraproject.org
    destname: registry-fedora
    # proxyurl in this one is totally ignored, because Docker.
    # (turns out it uses PATCH requests that Varnish cannot deal with)
    proxyurl: "{{ varnish_url }}"
    tags:
    - registry

  - role: httpd/reverseproxy
    website: registry.centos.org
    destname: registry-centos
    # proxyurl in this one is totally ignored, because Docker.
    # (turns out it uses PATCH requests that Varnish cannot deal with)
    proxyurl: "{{ varnish_url }}"
    tags:
    - registry

  - role: httpd/reverseproxy
    website: candidate-registry.fedoraproject.org
    destname: candidate-registry
    proxyurl: http://localhost:10054

  - role: httpd/reverseproxy
    website: retrace.fedoraproject.org
    destname: retrace
    proxyurl: http://localhost:10049
    when: env == "staging"

  - role: httpd/reverseproxy
    website: faf.fedoraproject.org
    destname: faf
    proxyurl: http://localhost:10050
    when: env == "staging"

  - role: httpd/reverseproxy
    website: apps.fedoraproject.org
    destname: pps
    remotepath: /pps
    localpath: /pps
    proxyurl: http://localhost:10051
    when: env == "staging"

  - role: httpd/reverseproxy
    website: admin.fedoraproject.org
    destname: fas3
    remotepath: /fas3
    localpath: /fas3
    proxyurl: http://localhost:10052
    when: env == "staging"

  - role: httpd/reverseproxy
    website: mbs.fedoraproject.org
    destname: mbs
    proxyurl: http://localhost:10063

  - role: httpd/reverseproxy
    website: koji.fedoraproject.org
    destname: koji
    proxyurl: http://localhost:10056
    keephost: true

  - role: httpd/reverseproxy
    website: s390.koji.fedoraproject.org
    destname: s390koji
    proxyurl: http://localhost:10059
    keephost: true

  - role: httpd/reverseproxy
    website: kojipkgs.fedoraproject.org
    destname: kojipkgs
    proxyurl: http://localhost:10062
    keephost: true

  # Nuke after F28 GA.
  # See roles/httpd/reverseproxy/reversepassproxy.brokenostreekojipkgs.conf
  - role: httpd/reverseproxy
    website: brokenostreekojipkgs.fedoraproject.org
    destname: brokenostreekojipkgs
    proxyurl: http://localhost:10062
    keephost: true

  - role: httpd/reverseproxy
    website: os.fedoraproject.org
    destname: os
    proxyurl: http://localhost:10064
    keephost: true
    tags:
    - os.fedoraproject.org

  - role: httpd/reverseproxy
    website: app.os.fedoraproject.org
    destname: app.os
    proxyurl: http://localhost:10065
    keephost: true
    tags:
    - app.os.fedoraproject.org

  - role: httpd/reverseproxy
    website: odcs.fedoraproject.org
    destname: odcs
    proxyurl: http://localhost:10066
    tags:
    - odcs

  - role: httpd/reverseproxy
    website: freshmaker.fedoraproject.org
    destname: freshmaker
    proxyurl: http://localhost:10067
    tags:
    - freshmaker

  - role: httpd/reverseproxy
    website: data-analysis.fedoraproject.org
    destname: awstats
    remotepath: /
    localpath: /
    proxyurl: http://data-analysis01.phx2.fedoraproject.org
